package com.byron.media.server.handlers;

import com.byron.media.server.model.MediaData;
import com.byron.media.server.model.ProxyMediaData;

public class ProxyMediaSession implements ISession {

    private String groupName;   // 该连接所在的组（非代理服务器有效）

    private boolean sender;     // 是否是发送端

    private boolean active;     // 是否注册

    private String device;      // 设备号

    private MediaSession mediaSession;

    private SessionContainer sessionContainer;

    public ProxyMediaSession(SessionContainer sessionContainer, String groupName, MediaSession mediaSession) {
        this.sessionContainer = sessionContainer;
        this.groupName = groupName;
        this.mediaSession = mediaSession;
    }

    /**
     * 连接激活，激活之后可以收到或者发送流媒体数据
     */
    public void beActive(String device, String groupName, boolean sender) {

        this.groupName = groupName;
        this.sender = sender;
        this.device = device;
        if(!sender){
//            // TODO 向接受者发送前一张I帧
//            sessionContainer.sendLastIframe(groupName, this);
            sessionContainer.addToGroup(device, groupName, this);
        }
        this.active = true;
    }


    /**
     * 取消激活，断线时需要操作
     */
    public void inactive(){
        sessionContainer.removeFromGroup(device, groupName);
    }

    @Override
    public void write(Object data) {

        // TODO 同一个组同一条消息防止重复发送
        mediaSession.write(new ProxyMediaData(groupName, (MediaData) data));
    }

    @Override
    public String getDevice() {
        return device;
    }
}
